package kr.or.ddit.member.service;

import java.util.List;

import kr.or.ddit.member.dao.IMemberDao;
import kr.or.ddit.vo.MemberDTO;

public class MemberServiceImpl implements IMemberService{
	private IMemberDao dao;

	public IMemberDao getDao() {
		return dao;
	}

	public void setDao(IMemberDao dao) {
		this.dao = dao;
	}

	@Override
	public memberResult createMember(MemberDTO member) {
		// 먼저 클라이언트가 입력한 회원 아이디가 이미 사용중인지 여부를 체크 / enum 이용
//		String sell_id = seller.getSell_id();
//		SellerDTO tempMember = dao.getSeller(sell_id);
//		if (tempMember == null) {// 사용가능 아이디인 경우
			int result = dao.insertMember(member);
			if (result >= 1) {	// excuteUpdate()의 반환값이 인트형 숫자라서.. 변화되면 변화된개수만큼
				return memberResult.OK;
			} else {
				return memberResult.Failed;
			}
//		} else { //클라이언트가 사용하겟다는 아이디가 이미 사용중인 경우
//			return sellerResult.PKDuplicated;
//		}
	}

	@Override
	public List<MemberDTO> getMemberList() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public MemberDTO getMember(String mem_id) {
		// TODO Auto-generated method stub
		return dao.getMember(mem_id);
	}

	@Override
	public memberResult modifyMember(MemberDTO member) {
		// 수정 전에 비밀번호가 맞는지 확인
		String mem_id=member.getMem_id();
		MemberDTO tempMember=dao.getMember(mem_id);
		
		// tempMember = null 회원 존재가 없는경우
		if(tempMember==null){//입력한 아이디에 해당하는 회원이 존재하지 않음. 즉 수정할수 없는 회원
			return memberResult.NOTEXIST;
		}else{
			if(tempMember.getMem_passwd().equals(member.getMem_passwd())){ //패스워드를 입력 안한경우가 있을수 있으니 이순서로
				int result = dao.updateMember(member); 	//왜 인트형이냐면 업데이트 하면 인트형인데.. 그건 수정된 레코드. 즉 영향받은 레코드의 갯수?
				if(result>=1){	// 따라서 위에서 하나 이상이 수정이 됫다면 1이상의 숫자가 나옴
					return memberResult.OK;
				}else{// 그렇지 않은경우 수정이 안된거란거지...
					return memberResult.Failed;
				}
			}else{
				return memberResult.INVALIDPASSWORD;
			}
		}
	}

	@Override
	public memberResult removeMember(MemberDTO member) {
		return null;
	}

	@Override
	public memberResult loginchk(String mem_id, String mem_passwd) {
//		String mem_id=member.getMem_id();			// 리무부 할떄 아이디를 먼저 가져와서 있을떄만 삭제토록 해야하니깐 먼저 비교
			MemberDTO tempMember=dao.getMember(mem_id);	// 이게 입력받은 값인가??

					
			if (tempMember==null){//// 리무부 할떄 아이디를 먼저 가져와서 있을떄만 삭제토록 해야하니깐 먼저 비교
				return memberResult.NOTEXIST;
			}else{
				if (tempMember.getMem_id().equals(mem_id) && tempMember.getMem_passwd().equals(mem_passwd)){
						return memberResult.OK;
					}else{
						return memberResult.INVALIDPASSWORD;
					}

			}
	}

}
